package pack.soldierboom;
import java.util.Random;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Rect;

 
public class Sprite 
{
	private static final int BMP_Linhas = 4;
    private static final int BMP_Colunas = 3;
    int[] DIRECTION_TO_ANIMATION_MAP = { 3, 1, 0, 2 };  
    private static final int Max_Speed = 5;
    private int x = 0;
    private int y = 0;      
    private int xSpeed = 5;
    private int ySpeed;
    private GameView gameView;
    private Bitmap bmp;
    private int currentFrame = 0;
    private int width;
    private int height;
 
    public Sprite(GameView gameView, Bitmap bmp)
    {
    	this.gameView = gameView;           
        this.bmp = bmp;
        this.width = bmp.getWidth() / BMP_Colunas;
        this.height = bmp.getHeight() / BMP_Linhas;
    
        Random rnd = new Random();
        x = rnd.nextInt(gameView.getWidth() - width);
        y = rnd.nextInt(gameView.getHeight()- height);
        xSpeed = rnd.nextInt(Max_Speed * 2) - Max_Speed;
        ySpeed = rnd.nextInt(Max_Speed * 2) - Max_Speed;
     }
 
     private void update()
     {
             if (x > gameView.getWidth() - width - xSpeed || x + xSpeed < 0)             	 
             {
                    xSpeed = -xSpeed;
             }
             x = x + xSpeed;
            		 
             if (y > gameView.getHeight() - height -ySpeed || y + ySpeed < 0)
             {
                    ySpeed = -ySpeed;
             }
             y = y + ySpeed;
             currentFrame = ++currentFrame % BMP_Colunas;
       }
 
       public void onDraw(Canvas canvas) {
             update();
             int srcX = currentFrame * width;
             int srcY = getAnimacaoLinha() * height;
             Rect src = new Rect(srcX, srcY, srcX + width, srcY + height);
             Rect dst = new Rect(x, y, x + width, y + height);
             canvas.drawBitmap(bmp, src, dst, null);
       }
       private int getAnimacaoLinha()
       {
    	   double dirDouble = (Math.atan2(xSpeed, ySpeed) / (Math.PI / 2) + 2);
           int direction = (int) Math.round(dirDouble) % BMP_Linhas;
           return DIRECTION_TO_ANIMATION_MAP[direction];    	   
       }
       public boolean isCollition(float x2, float y2)
       {
           return x2 > x && x2 < x + width && y2 > y && y2 < y + height;
           
       }
}